The performance of a semiconductor storage device, such as a solid state drive (SSD), is greatly impacted by the speed of processing read commands. To increase read command processing speed and limit latency, some systems use a system of pre-fetching descriptors for data tags received from a host and storing them in the local RAM until the described data is processed. Read commands received from a host can be described by Physical Region Page (PRP) format request, or can be in the form of a Scatter Gather List (SGL). The SGL allows more flexibility in describing the location of data to transfer, but allows the use of any number of descriptors to describe the data transfer.
In most cases, a SGL data descriptor format used by a host describes a data transfer using a small number of descriptors, but in some cases, an SGL format command includes a large number of descriptors associated with the transfer. In such cases, systems which use pre-fetching of descriptors quickly use up all available local memory space attempting to pre-fetch and store the descriptors associated with the atypically large number of SGL data descriptors for a data tag. Further, the processing of the atypical SGL takes much longer than processing of typical, short data descriptors. Processing the atypical SGL data descriptors blocks the processing of the typical data tags described by a small number of descriptors and causes inefficient use of the buffers and memory of the device, slowing down the overall transfer rate.
Accordingly, there is an unmet need to design systems capable of efficiently processing data in a scatter gather list.